Wirus komputerowy
Wirus komputerowy – program komputerowy posiadający zdolność powielania się, tak jak prawdziwy wirus, stąd jego nazwa. Wirus do swojego działania potrzebuje i wykorzystuje system operacyjny, aplikacje oraz tożsamość użytkownika komputera.
Wirusa komputerowego zalicza się do złośliwego oprogramowania. Do zwalczania i zabezpieczania się przed wirusami komputerowymi stosuje się programy antywirusowe oraz bieżące aktualizacje systemów i oprogramowania.
Podstawowe informacje o wirusach komputerowych
Przenoszenie się i działanie wirusa komputerowego
Wirus komputerowy przenosi się poprzez pliki, co wymaga obecności systemu plików, lub przez bezpośredni zapis w wybranym sektorze bądź jednostce alokacji zewnętrznego nośnika danych np. dysku twardego, dyskietki lub pendrive'a. Proces replikacji wirusa komputerowego polega na odpowiedniej modyfikacji zawartości pliku, sektora lub jednostki alokacji. Tak zmodyfikowany nośnik danych nazywa się nosicielem wirusa komputerowego, analogicznie do prawdziwego nosiciela wirusa.
Rozmiary pierwszych wirusów komputerowych zawierały się w granicach od kilkudziesięciu bajtów do kilku kilobajtów. Obecnie, takie klasyczne wirusy spotyka się rzadziej, częściej jest to połączenie wirusa z robakiem komputerowym o rozmiarze rzędu kilkadziesiąt kilobajtów. Taką, stosunkowo niewielką ilość kodu binarnego, z łatwością można ukryć w dużym pliku zawierającym program komputerowy, o rozmiarze rzędu kilku megabajtów. Sam rozmiar wirusa zależy od czynników takich jak:
umiejętności programistyczne twórcy wirusa – wirus lepszego programisty napisany w tym samym języku będzie mniejszy lub będzie miał więcej funkcji;
użyty język programowania – wirus o podobnej funkcjonalności napisany w języku maszynowym (asembler) zwykle będzie mniejszy niż w języku skryptowym czy języku wysokiego poziomu;
przewidywana funkcjonalność wirusa – prosty wirus będzie mniejszy od szkodnika wykonującego wiele różnych czynności; najmniejsze wirusy potrafią tylko się powielać;
wykorzystanie cech środowiska operacyjnego – wirus napisany jako maksymalnie niezależny musi mieć wbudowane wszystkie potrzebne biblioteki, wirus korzystający w pełni ze środowiska ma tylko minimum kodu niezbędne do wywołania dostępnych w tym środowisku funkcji.
Od programisty zależą także efekty, jakie wirus będzie wywoływał po zainfekowaniu systemu, na przykład:
kopiowanie się na inne nośniki
nieupoważnione kasowanie danych
rozsyłanie spamu poprzez pocztę elektroniczną
dokonywanie ataków na inne hosty w sieci, w tym serwery
kradzież danych: hasła, numery kart płatniczych, dane osobowe
zatrzymanie pracy komputera, w tym całkowite wyłączenie
wyświetlanie grafiki i/lub odgrywanie dźwięków
utrudnienie lub uniemożliwienie pracy użytkownikowi komputera
przejęcie przez osobę nieupoważnioną kontroli nad komputerem poprzez sieć
tworzenie grupy hostów zarażonych danym wirusem, tzw. botnet
Oprócz typowych języków programowania (np. Pascal czy C) do stworzenia wirusa mogą być użyte języki makr wbudowane w nowoczesne edytory tekstów lub arkusze kalkulacyjne. Zawarte w nich mechanizmy pozwalają na infekcję każdego otwieranego przez program dokumentu lub arkusza.
Platformy programistyczne
Popularność wirusów komputerowych jest związana z popularnością danej platformy, która tworzy środowisko do rozprzestrzeniania się wirusa. Wynika to z działania wirusów komputerowych w środowiskach homogenicznych.
Generatory wirusów
Istnieje wiele programów umożliwiających stworzenie własnego wirusa, nawet bez znajomości systemu czy mechanizmów wykorzystywanych przez wirusy. Można je bez problemu znaleźć w Internecie. Korzystają one z gotowych modułów w asemblerze i umożliwiają stworzenie wirusa o zadanych parametrach wybieranych zwykle przy pomocy przyjaznego użytkownikowi menu. Można w nim określić zakres infekowanych obiektów oraz rodzaj efektów, które ma on wywoływać. Oprócz kodu wynikowego wirusa, generatory tworzą także źródła w asemblerze, co umożliwia zainteresowanemu pisaniem wirusów użytkownikowi dokształcenie się w tej dziedzinie.
Klasyfikacja wirusów komputerowych
Wirusy komputerowe najczęściej klasyfikuje się ze względu na infekowany obiekt:
Wirusy dyskowe
infekujące sektory startowe dyskietek,
infekujące początkowe sektory dysków twardych.
Wirusy plikowe
lokujące się na końcu pliku (ang. end of file infector ),
nadpisujące (ang. overwriting infector). Lokują się na początku pliku, zwykle nieodwracalnie go niszczą,
nagłówkowe (ang. header infector). Wirusy te nie przekraczają rozmiaru jednego sektora (512 bajtów),
wykorzystujące niezapisaną część ostatniej jednostki alokacji pliku (ang. slack space infector),
lokujące się w pliku w miejscach gdzie jest niewykorzystany obszar pliku (ang. cave infector),
lokujące się w dowolnym miejscu pliku (ang. surface infector).
Wirusy skryptowe
wsadowe (ang. batch virus), infekują pliki wsadowe np. typu.bat,.vbs,
powłokowe (ang. shell virus), infekują pliki zawierające skrypty języka skryptowego powłoki systemowej np. dla linuxowego basha,
makrowe (ang. macro-virus), infekują pliki makropoleceń np. procesora tekstu czy arkusza kalkulacyjnego,
lokacyjne (ang. locator-virus), infekuje daną lokację lub plik.
Wirusy telefonów komórkowych
infekujące telefony komórkowe, które w istocie są hostami sieciowymi.
Podział wirusów ze względu na sposób infekcji
Wirusy nierezydentne
Wirusy nierezydentne (ang. non-resident viruses) są najprostszą odmianą wirusów zarażających pliki z programami. Po uruchomieniu programu z zarażonego pliku, kod binarny wirusa instaluje się w pamięci operacyjnej, uruchamia się i poszukuje kolejnego obiektu do zarażenia. Jeśli go nie znajdzie, sterowanie oddawane jest z powrotem do programu z zarażonego pliku. W poszukiwania pliku ofiary, wirus przeszukuje katalog bieżący wraz z podkatalogami, katalog główny oraz katalogi określone w odpowiedniej zmiennej środowiskowej systemu operacyjnego. Uaktywnieniu wirusa nierezydentnego towarzyszy wyraźne opóźnienie w uruchomieniu właściwego programu oraz, łatwo zauważalna, wzmożona aktywność nośnika danych: dysku twardego, dyskietki czy pendrive'a.
Wirusy rezydentne
Można powiedzieć, że wirusy nierezydentne są dość ograniczone, gdyż łatwo je wykryć. Dlatego pojawił się nowy rodzaj wirusa – wirus rezydentny (ang. resident virus). Jego zasada działania polega na zainstalowaniu się w pamięci operacyjnej komputera i korzystaniu z odwołań do systemu operacyjnego w taki sposób jak czynią to programy rezydentne (ang. Terminate but Stay Resident, TSR). Wirus rezydentny to w istocie program rezydentny ukrywający swój kod binarny przed programami zarządzającymi pamięcią operacyjną. Będąc jednocześnie aktywnym i ukrytym w pamięci ma o wiele szersze pole działania niż wirusy nierezydentne. Wirus rezydentny, aby działać, musi jednak korzystać z systemu przerwań i z tego powodu trudniej jest go programować.
Ze względu na szybkość działania, wirusy rezydentne dzielimy na:
szybkie (ang. fast infectors), ich celem jest jak najszybsza infekcja całego systemu. Przejmują wszystkie możliwe funkcje systemu operacyjnego używane do obsługi plików i zarażają wszystko, co się da, w jak najkrótszym czasie. Często pierwszą czynnością wykonywaną przez szybkiego wirusa jest zamazanie swoim kodem fragmentu kodu interpretera poleceń, co sprawia, że przy wywołaniu jakiegokolwiek polecenia, kod binarny wirusa zaczyna na nowo działać. Działanie takiego wirusa jest zwykle łatwo zauważalna dla użytkownika komputera np. ze względu na irytujące opóźnienia i anomalie podczas wykonywania jego poleceń.
wolne (ang. slow infectors), można powiedzieć, że są bardziej inteligentne od wirusów szybkich. Ich głównym celem jest jak najdłuższe przetrwanie w celu infekowania systemu tak, aby użytkownik się w niczym nie zorientował. Wirusy te używają powolnych, zmiennych procedur szyfrujących i techniki ukrywania się (ang. stealth). Infekują przeważnie tylko takie pliki, które tworzy lub modyfikuje użytkownik. Powoduje to, że niedoświadczony użytkownik, nawet w przypadku sygnalizowania niebezpiecznej operacji przez program antywirusowy, będzie przekonany, że potwierdza wykonywane przez siebie czynności. Wirusy tego typu są trudne do wykrycia i usunięcia nawet przez programy antywirusowe i zaawansowanych użytkowników znających dobrze system operacyjny.
Profilaktyka antywirusowa
Najlepszą metodą ustrzeżenia się przed wirusami jest ochrona prewencyjna, która opiera się na domyślnym odrzucaniu wszystkich plików, które docierają do naszego komputera. Niekiedy nawet pliki od zaufanych osób mogą zawierać wirusy, a osoby te mogą o tym po prostu nie wiedzieć. Ważnym elementem działań zapobiegawczych jest regularne tworzenie kopii awaryjnych dla najważniejszych plików, programów bądź dokumentów. Trzeba również regularnie tworzyć kopie zapasowe danych. W przypadku zainfekowania komputera nie należy od razu w panice formatować dysku twardego. Co więcej, wykonanie formatowania dysku wcale nie oznacza pozbycia się niektórych wirusów z systemu.
Ochrona przed wirusami plików wykonywalnych
Oprócz sprawdzenia programem antywirusowym, pliki wykonywalne można dodatkowo przeanalizować przy użyciu strony analizującej pliki pod kątem ich zainfekowania (np. virustotal.com). Dzięki temu rozwiązaniu można mieć niemalże 100% pewności, że dany plik jest/nie jest zainfekowany. Wyjątkiem mogą być wirusy, które są tak nowe, że żadna firma produkująca zabezpieczenie nie miała z nimi styczności, więc nie jest ich w stanie rozpoznać jako zainfekowane.
Ochrona przed bombami logicznymi i końmi trojańskimi
Konie trojańskie i bomby logiczne ze względu na sposób działania są trudne do wykrycia, gdyż właściwy, destrukcyjny kod może być umieszczony w dowolnym miejscu programu i trudno go odnaleźć. Niekiedy jest to wręcz niemożliwe. Z pomocą przychodzi tu technika heurystyczna. Polega ona na wykrywaniu potencjalnych agresorów na podstawie charakterystycznych sekwencji kodu. Programy poszukujące koni trojańskich w podejrzanych plikach najczęściej szukają w nich instrukcji wywołań przerwań programowych. Są to przerwania 13h lub 26h, używane do odczytywania i zapisywania sektorów. Ze względu na swe działanie, przerwania te występują bardzo rzadko w typowym oprogramowaniu użytkowym, gdyż normalne programy nie korzystają z bezpośrednich operacji zapisu na sektorach. Potencjalnymi końmi trojańskimi są także najnowsze wersje typowych i często używanych programów użytkowych, programów kompresujących czy nawet antywirusowych, zatem należy się z nimi obchodzić bardzo ostrożnie i przed uruchomieniem ich wypada je przeskanować.
Ochrona przed makrowirusami
Bez programu antywirusowego trudno jest wykryć wirusy w plikach dokumentów DOC czy XLS, ale istnieją metody aby zminimalizować szansę zainfekowania systemu. Można w tym celu:
- wyłączyć wszystkie makra automatyczne przy pomocy własnoręcznie napisanego makra:
SUB MAIN
DisableAutoMacros 1
END SUB
- aby przy uruchamianiu Worda wyłączyć makro AutoExec należy uruchamiać aplikację z parametrem m:
WINWORD.EXE /M
- podczas wczytywania plików trzymać wciśnięty klawisz SHIFT, co spowoduje zablokowanie automatycznego makra AutoOpen
- od czasu do czasu przeglądać listę makr zawartych w szablonie NORMAL.DOT. Jeżeli zawiera ona jakieś makra automatyczne lub makra o dziwnych, niespotykanych nazwach, możliwe, iż szablon jest zainfekowany. Makra można przeglądać za pomocą opcji wybieranych z menu Worda PLIK/SZABLONY/ORGANIZATOR/MAKRA, bądź też NARZĘDZIA/MAKRO
- ze względu na to, iż wirus może nie przejmować żadnego makra automatycznego, lecz tylko podmieniać polecenia menu (najczęściej menu PLIK/ZACHOWAJ, PLIK/ZACHOWAJ JAKO), powyższe środki mogą okazać się całkowicie nieskuteczne.
Ciekawostki
W 2008 roku wirusa odkryto w laptopach na Międzynarodowej Stacji Kosmicznej. Był to W32.Gammima.AG, podglądający hasła do gier online.
Zobacz też
DDoS
koń trojański (informatyka)
makrowirusy
programy szpiegujące
rootkit
sniffer
wirus albański
wirus polimorficzny
wirusy towarzyszące
XP Antivirus
GRUPA MEDIA INFORMACYJNE & ADAM NAWARA |